<?php
session_start();
require_once '../model/Colecao.php';
class ColecaoDLO {

    private $colecoes;
    private static $colecaoDLO;

    private function __construct() {
    }

    /**
     * @method colecaoDLO getInstance() para obter uma única instância do controlador
     * @return ColecaoDLO
     */
    public static function getInstance() {
        if (!isset (self::$colecaoDLO)) {
            if (!isset ($_SESSION['colecaoDLO'])) {
                $_SESSION['colecaoDLO'] = serialize(new ColecaoDLO());
            }
            self::$colecaoDLO = unserialize($_SESSION['colecaoDLO']);
        }
        return self::$colecaoDLO;
    }

    public function cadastrar(&$nome) {
        $colecao = new Colecao();
        $colecao->setNome($nome);
        $colecao->cadastrar();
    }

    public function listar() {
        $result = &Colecao::listar();
        $resultado = array();
        for ($i = 0; $i < sizeof($result); $i++) {
            $row = array();
            $row['cod_colecao'] = &$result[$i]->getCod_colecao();
            $row['nome'] = &$result[$i]->getNome();
            $resultado[$i] = &$row;
            unset ($row);
        }
        return $resultado;
    }

    public function excluir(&$cod_colecao) {
        $colecao = null;
        if (isset ($this->colecoes[$cod_colecao])) {
            $colecao = &$this->colecoes[$cod_colecao];
        } else {
            $colecao = &Colecao::consultar($cod_colecao);
            $this->colecoes[$cod_colecao] = &$colecao;
            $_SESSION['colecaoDLO'] = serialize($this);
        }
        if ($colecao->isVinculado() == 1) {
            throw new Exception("Recurso vinculado");
        }
        $colecao->excluir();
        unset ($this->colecoes[$cod_colecao]);
        $_SESSION['colecaoDLO'] = serialize($this);
    }

    public function alterar(&$cod_colecao, &$campo_id, &$campo_valor) {
        $colecao = null;
        if (isset ($this->colecoes[$cod_colecao])) {
            $colecao = &$this->colecoes[$cod_colecao];
        } else {
            $colecao = &Colecao::consultar($cod_colecao);
            $this->colecoes[$cod_colecao] = &$colecao;
            $_SESSION['colecaoDLO'] = serialize($this);
        }
        if ($colecao->isVinculado() == 1) {
            throw new Exception("Recurso vinculado");
        }
        $colecao->alterarCampo($campo_id, $campo_valor);
        $this->colecoes[$cod_colecao] = &$colecao;
        $_SESSION['colecaoDLO'] = serialize($this);
    }

    public function consultar(&$cod_colecao) {
        $colecao = null;
        if (isset ($this->colecoes[$cod_colecao])) {
            $colecao = &$this->colecoes[$cod_colecao];
        } else {
            $colecao = &Colecao::consultar($cod_colecao);
            $this->colecoes[$cod_colecao] = &$colecao;
            $_SESSION['colecaoDLO'] = serialize($this);
        }
        $row = array();
        $row['cod_colecao'] = &$colecao->getCod_colecao();
        $row['nome'] = &$colecao->getNome();
        $row['vinculado'] = &$colecao->isVinculado();
        return $row;
    }
}
?>